//
//  NSDate + SinaDate.swift
//  新浪时间处理
//
//  Created by 雷路荣 on 16/1/3.
//  Copyright © 2016年 leilurong. All rights reserved.
//

import Foundation

extension NSDate {
    
    /// 类方法将新浪返回的时间转成系统的NSDate
    class func sinaDateToDate(string: String) -> NSDate {
        // Sun Jan 03 11:40:10 +0800 2016
        // EEE MMM dd HH:mm:ss zzz yyyy
        // 将新浪返回的时间转成系统的NSDate
        let formatter = NSDateFormatter()
        // 如果是在真机上需要指定区域
        formatter.locale = NSLocale(localeIdentifier: "en")
        // 指定格式
        formatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        // 将string转成NSDate通过指定的格式
        let date = formatter.dateFromString(string)
        // 有时间就返回时间，没有就返回当前时间NSDate()
        return date ?? NSDate()
    }
    
    ///返回日期描述字符串
    ///  返回日期描述字符串
    ///     格式如下
    ///     -   刚刚(一分钟内)
    ///     -   X分钟前(一小时内)
    ///     -   X小时前(当天)
    ///     -   昨天 HH:mm(昨天)
    ///     -   MM-dd HH:mm(一年内)
    ///     -   yyyy-MM-dd HH:mm(更早期)
    func sinaDateDescription() -> String {
        //日历
        let calender =  NSCalendar.currentCalendar()
        //判断是否当天
        if calender.isDateInToday(self) {
            //获取self和当前时间相差多少秒
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            // 一分钟内
            if delta < 60 {
                return "刚刚"
            } else if delta < 60 * 60 {
                let m = delta / 60
                return "\(m)分钟前"
            } else {
                let h = delta / (60*60)
                return "\(h)小时前"
            }
        }
        //时间格式
        var dateFormatter = ""

        if calender.isDateInYesterday(self) {
            dateFormatter = "昨天HH:mm"
            //判断是否一年内
        }else if calender.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
            // 2016-01-01 09:40:10 +0000
            // 2015-12-31 09:40:10 +0000
            // 判断是否是一年内
            // date1: 第一个时间
            // toDate: 第二个时间
            // toUnitGranularity: 比较的单位
            // NSDate() 创建的是当前时间
            // NSComparisonResult
            // 同一年
            dateFormatter = "MM-dd HH:mm"
        } else if calender.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedAscending {
            // 2015 toDate: 2016 一年以外更早期
            dateFormatter = "yyyy-MM-dd HH:mm"
        }
        
        // 来将self进行格式化
        let formatter = NSDateFormatter()
        formatter.locale = NSLocale(localeIdentifier: "en")
        formatter.dateFormat = dateFormatter
        // 将当前对象格式化
        return formatter.stringFromDate(self)
    }
}






























